//Declaration utilisateur
var gridUtilisateur;
var storeUtilisateur;
var editorUtilisateur;
	var Utilisateur = Ext.data.Record.create([
    	{name: 'idutilisateur'},
        {
            name: 'nom',
            type: 'string'
        }, {
            name: 'prenom',
            type: 'string'
        }, {
            name: 'email',
            type: 'string'
        }, {
            name: 'login',
            type: 'string'
        }, {
            name: 'idProfil',
            type: 'string'
        }
        
        ]);
    
    var proxyUtilisateur = new Ext.data.HttpProxy({
        api: {
		    read :'utilisateurs/view.action',
		    create : 'utilisateurs/create.action',
		    update: 'utilisateurs/update.action',
		    destroy: 'utilisateurs/delete.action'
        }
    });
    
    var readerUtilisateur = new Ext.data.JsonReader({
        totalProperty: 'total',
        successProperty: 'success',
        idProperty: 'idutilisateur',
        root: 'data',
        messageProperty: 'message'  // <-- New "messageProperty" meta-data
    }, 
    Utilisateur);

 // The new DataWriter component.
    var writerUtilisateur = new Ext.data.JsonWriter({
        encode: true,
        writeAllFields: true
    });
    
  //password form
    var frmpw;
    function addTabUtilisateur(){
    	var myTab=Ext.get('utilisateur-tab');
    	if(!myTab)
    	{
    		storeUtilisateur = new Ext.data.Store({
    	        id: 'user',
    	        proxy: proxyUtilisateur,
    	        reader: readerUtilisateur,
    	        writer: writerUtilisateur,  // <-- plug a DataWriter into the store just as you would a Reader
    	        autoSave: false // <-- false would delay executing create, update, destroy requests until specifically told to do so with some [save] buton.
    	    });
    		editorUtilisateur = new Ext.ux.grid.RowEditor({
    	        saveText: 'Update'
    	    });
    	    storeUtilisateur.load({params:{start:0, limit:limitPageSize}});
    		tabs.add({
                id:'utilisateur-tab',
    			title: 'Utilisateur',
    			iconCls: 'tabs',
                closable:true,
                items:[gridUtilisateur=new Ext.grid.GridPanel({
    			            store: storeUtilisateur,
    			            viewConfig: {forceFit: true},
                        	columns: [
                              {header: "nom",
                               sortable: true,
                               dataIndex: 'nom',
                               width: 100,
                               editor: {
                                  xtype: 'textfield',
                                  allowBlank: false
                              }},
                              {header: "Prenom",
                               width: 100,
                               sortable: true,
                               dataIndex: 'prenom',
                               editor: {
                                   xtype: 'textfield',
                                   allowBlank: true
                              }},
                              {header: "Login",
                               width: 100,
                               sortable: true,
                               dataIndex: 'login',
                               editor: {
                                   xtype: 'textfield',
                                   allowBlank: true
                              }},
                              {header: "Email",
                               width: 100,
                               sortable: true,
                               dataIndex: 'email',
                               editor: {
                                   xtype: 'textfield',
                                   allowBlank: true
                              }},
                              {header: "Profil",
                               width: 100,
                               sortable: true,
                               dataIndex: 'idProfil',
                               renderer: function(value) {
                            	  if(value)
                            		  return storeComboProfils.getAt(storeComboProfils.find('idProfil',value)).data.intitule;
    			    		   },
                               editor: {
    		                           	xtype:'combo',
    		                           	name: 'idProfil',
    		                           	store: 	storeComboProfils,
    		    						displayField:'intitule',
    		    						valueField: 'idProfil',
    		    						typeAhead: true,
    		    					    mode: 'local',
    		    					    triggerAction: 'all',
    		    					    lazyRender: true,
    		    			            listClass: 'x-combo-list-small',
    		    					    selectOnFocus:true
    	                          	}
                              }
                          ],
                    plugins: [editorUtilisateur],
                    border:false,
                    height: 320,
                    frame:false,
            		tbar: [{
                        iconCls: 'add',
                        text: 'Nouveau',
                        handler: function(){
                            var e = new Utilisateur();
                            editorUtilisateur.stopEditing();
                            storeUtilisateur.insert(0, e);
                            gridUtilisateur.getView().refresh();
                            gridUtilisateur.getSelectionModel().selectRow(0);
                            editorUtilisateur.startEditing(0);
                        	}
                    	}
            			,{
                        iconCls: 'remove',
                        text: 'Supprimer',
                        handler: function(){
                            editorUtilisateur.stopEditing();
                            var s = gridUtilisateur.getSelectionModel().getSelections();
                            for(var i = 0, r; r = s[i]; i++){
                                storeUtilisateur.remove(r);
                            }
                        }
                    },{
                        iconCls: 'save',
                        text: 'Enregistrer',
                        handler: function(){
                            storeUtilisateur.save();
                        }
                    }],
                    bbar: new Ext.PagingToolbar({
                    	pageSize: limitPageSize,
                        store:storeUtilisateur,
                    	displayInfo:true,
                    	displayMessage:"Affichage des utilisateurs {0} - {1} of {2}"
                    	})
                })
                ,
                frmpw=new Ext.FormPanel({
        			id: 'password-form',
      			  labelWidth: 125,
      			  bodyStyle: 'padding:15px;background:transparent',
      			  border: false,
      			  items: [
      			  { xtype: 'textfield', id: 'pwd', fieldLabel: 'Password',
      			    inputType: 'password',allowBlank: false, minLength: 6,
      			    maxLength: 32,
      			    anchor:'90%',
      			    minLengthText: 'Password must be at least 6 characters long.'
      			  },
      			  { xtype: 'textfield', id: 'pwd-confirm',
      			    fieldLabel: 'Confirm Password', inputType: 'password',
      			    allowBlank: false, minLength: 6,
      			    maxLength: 32,anchor:'90%',
      			    minLengthText: 'Password must be at least 6 characters long.',
      			    vtype: 'password', 
      			    initialPassField: 'pwd'
      			  }
      			],
      			buttons: [{
      			  text: 'Enregistrer',
      			  handler: function() {
      				var gridrecord = gridUtilisateur.getSelectionModel().getSelected();
      				if (gridrecord ==undefined){
      		            alert('Veuillez selectionner un utilisateur');
      		        }
      		        else{
      		        	var rowIndex = storeUtilisateur.indexOf(gridrecord);
      		        	var monId = storeUtilisateur.getAt(rowIndex).data.idutilisateur;
      		        	var pw =Ext.getCmp("pwd").getValue();
      		        	if(pw!="")
      		        	{
      		        		Ext.Ajax.request({
      		        			method:'POST',
      		      		      	url: 'utilisateurs/initpw.action',
      			      		    params:{uID: monId,uPW:pw},
      		        	       	success: function(msg){
      			        	    	var jsonData = Ext.util.JSON.decode(msg.responseText);
      			        	    	if(jsonData.message!="")
      			        	    	{
      			        	    		alert(jsonData.message);
      			        	    		Ext.getCmp("pwd").setValue("");
      					        		Ext.getCmp("pwd-confirm").setValue("");
      			        	    	}
      				      		}
      		        	    });
      		        	}
      		         }
      			  }
      			},
      			{
      			  text: 'Annuler',
      			  handler: function() {
      				Ext.getCmp("pwd").setValue("");
              		Ext.getCmp("pwd-confirm").setValue("");
      			  }
      			  }]
      		    })
    		]
            }).show();
    	}else
    	{
    		tabs.setActiveTab(myTab.id);
    	}
    }